/*************************************************************************
	> File Name: 指针数组和数组指针.c
	> Author: Angel Criss
	> Mail: abbytsing@gmail.com 
	> Created Time: 日  8/ 3 11:42:02 2014
 ************************************************************************/
/*
 *指针数组  array of pointer :即数组元素都是指针
 *
 *数组指针  a pointer to an array : 指向数组的指针
 * */


#include<stdio.h>

int main()
{
    int c[4]={1,2,3,4};
    int d[3][4]={{1,1,1,1,},{2,2,2,2,},{3,3,3,3}};
    int *a[4]; // 指针数组
    int (*b)[4]; // 数组指针

    b=d;       // 数组指针指向 int 型数组首地址

    for(int i=0;i<4;i++)
    {
        a[i]=&c[i];         // 赋值给指针数组
        printf("*a[%d] - %p -- %d\n",i,&a[0][i],a[0][i]);
    }

    printf("---------------\n");
    for(int i=0;i<4;i++)
        printf("c[%d] - %p -- %d\n",i,&c[i],c[i]);

    printf("---------------\n");
    for(int i=0;i<3;i++)
    {
        for(int j=0;j<4;j++)
            printf("d[%d][%d] - %p -- %d\n",i,j,&d[i][j],d[i][j]);
    }

    printf("---------------\n");

    for(int i=0;i<3;i++)
    {
        for(int j=0;j<4;j++)
            printf("(*b)[%d] - %p -- %p -- %d\n",j,b[i],&b[i][j],b[i][j]);
    }

    return 0;
}
